As an increasing number of applications and services are being made available over networks such as the Internet, more and more content, application, and/or service providers are turning to technologies such as remote resource sharing or “cloud computing.” Cloud computing, in general, is an approach to providing access to electronic resources through services, such as Web services, where the hardware and/or software used to support those services is dynamically scalable to meet the needs of the services at any given time. A user or customer typically will rent, lease, or otherwise pay for access to resources through the cloud, and thus does not have to purchase and maintain the hardware and/or software to provide access to these resources.
In some environments, multiple users can share resources such as data repositories, wherein the users can concurrently send multiple read and/or write requests to be executed against the users' respective volumes within the same data repository. Problems can arise, however, when a user desires to modify operational parameters associated with the user's allocation of the shared resources. For example, the user's storage needs may exceed the user's allocated storage capacity on the shared resource. Certain approaches enable a user to add new volumes to supply the user's need for additional storage capacity or to self-administer migration of data to a larger volume. Such techniques, however, can result in additional complexity to user application logic and increased latency such as to manage data across multiple volumes or to migrate data across remote data stores and/or data stores having higher latency. For instance, a user application that creates a large data file may run up against storage limits during such a process. If the user wishes to add additional volumes when storage capacity is close to being exceeded or when storage capacity has been exceeded, the user may be required to include complex application logic such as partitioning the data file into several smaller data segments and distributing the segments across several volumes. In addition, data overhead may be required to keep track of the distributed data segments.